/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trunk.model;

import java.io.Serializable;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 *
 * @author Karine
 */
@SuppressWarnings("serial")
public class Cliente implements Serializable, Comparable<Cliente>{
	private static int IDgenerator;
	private int IDcliente;
	private String nome;
	private String email;
	private String senha;
	private TipoStatus status;
	private InetAddress enderecoIP;
	private int porta;




	public Cliente() {
		super();
	}

	public Cliente(String nome, String email, String senha, InetAddress endereco, int porta){////Karine - Construtor Problema 2
		this.IDcliente = IDgenerator++;
		this.nome = nome;
		this.email = email;
		this.senha = senha;
		this.status = TipoStatus.OFFLINE;
		this.enderecoIP =  endereco;
                this.porta = porta;

	}

	public Cliente(String nome, String email, String senha){//Karine - Construtor Antigo
		this.IDcliente = IDgenerator++;
		this.nome = nome;
		this.email = email;
		this.senha = senha;
		this.status = TipoStatus.OFFLINE;
		this.enderecoIP = null;


	}

	public Cliente(String nome, String email, String senha, TipoStatus status){
		this.IDcliente = IDgenerator++;
		this.nome = nome;
		this.email = email;
		this.senha = senha;
		this.status = status;
	}

	public Cliente(String nome, String enderecoIP, int porta) throws UnknownHostException{
		this.IDcliente = IDgenerator++;
		this.nome = nome;
		this.enderecoIP = InetAddress.getByName(enderecoIP);
		this.porta = porta;
	}

	public int getIDcliente() {
		return IDcliente;
	}

	public void setNome(String nom){
		nome = nom;
	}

	public String getNome(){    
		return nome;
	}

	public void setEmail(String emai){
		email = emai;

	}

	public String getEmail(){
		return email;
	}

	public void setSenha(String senh){
		senha = senh;

	}

	public String getSenha(){
		return senha;
	}

	public void setStatus(TipoStatus status){
		this.status = status;
	}

	public TipoStatus getStatus(){
		return this.status;
	}

	public InetAddress getInetAddress() {
		return enderecoIP;
	}


	public void setInetAddress(InetAddress Nendereco){
		this.enderecoIP = Nendereco;
	}

	public int getPorta() {
		return porta;
	}

	public void setPorta(int porta) {
		this.porta = porta;
	}

	@Override
	public int compareTo(Cliente o) {
		return this.getNome().compareTo(o.getNome());
	}

}

